Learn R Programming

pomp (version 1.10)

Utilities for reproducibility: Tools for reproducible computations.

Description

On cooking shows, recipes requiring lengthy baking or stewing are prepared beforehand. The bake and stew functions perform analogously: an R computation is performed and stored in a named file. If the function is called again and the file is present, the computation is not executed; rather, the results are loaded from the file in which they were previously stored. Moreover, via their optional seed argument, bake and stew can control the pseudorandom-number generator (RNG) for greater reproducibility. After the computation is finished, these functions restore the pre-existing RNG state to avoid side effects.

The freeze function doesn't save results, but does set the RNG state to the specified value and restore it after the computation is complete.

Usage

bake(file, expr, seed, kind = NULL, normal.kind = NULL) stew(file, expr, seed, kind = NULL, normal.kind = NULL) freeze(expr, seed, kind = NULL, normal.kind = NULL)

Arguments

file
Name of the binary data file in which the result will be stored or retrieved, as appropriate. For bake, this will contain a single R object and hence be an RDS file (extension ‘rds’); for stew, this will contain one or more named R objects and hence be an RDA file (extension ‘rda’).
expr
Expression to be evaluated.
seed, kind, normal.kind
Optional. To set the state and, optionally, kind of RNG used. See set.seed.

Value

bake returns the value of the evaluated expression expr. Other objects created in the evaluation of expr are discarded along with the temporary, local environment created for the evaluation.The latter behavior differs from that of stew, which returns the names of the objects created during the evaluation of expr. After stew completes, these objects exist in the parent environment (that from which stew was called).freeze returns the value of evaluated expression expr. However, freeze evaluates expr within the parent environment, so other objects created in the evaluation of expr will therefore exist after freeze completes.

Details

Both bake and stew first test to see whether file exists. If it does, bake reads it using readRDS and returns the resulting object. By contrast, stew loads the file using load and copies the objects it contains into the user's workspace (or the environment of the call to stew).

If file does not exist, then both bake and stew evaluate the expression expr; they differ in the results that they save. bake saves the value of the evaluated expression to file as a single R object. The name of that object is not saved. By contrast, stew creates a local environment within which expris evaluated; all objects in that environment are saved (by name) in file.

Examples

Run this code
  ## Not run: 
#   bake(file="example1.rds",{
#     x <- runif(1000)
#     mean(x)
#   })
# 
#   stew(file="example2.rda",{
#     x <- runif(10)
#     y <- rnorm(n=10,mean=3*x+5,sd=2)
#   })
# 
#   plot(x,y)  
#   ## End(Not run)

  freeze(runif(3),seed=5886730)
  freeze(runif(3),seed=5886730)

Run the code above in your browser using DataLab